package com.aipartner.service;

import com.aipartner.dto.ExampleChatRequest;
import com.aipartner.dto.ExampleDetailResponse;
import com.aipartner.entity.AiImageExampleChat;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 示例图聊天服务接口
 * 
 * @author AI Partner Team
 * @since 2024-01-20
 */
public interface AiImageExampleChatService extends IService<AiImageExampleChat> {
    
    /**
     * 获取示例图详情（包含聊天记录）
     * 
     * @param exampleId 示例图ID
     * @param page 页码
     * @param size 页大小
     * @param currentUserId 当前用户ID
     * @return 示例图详情
     */
    ExampleDetailResponse getExampleDetail(Long exampleId, Integer page, Integer size, Long currentUserId);
    
    /**
     * 分页获取示例图聊天记录
     * 
     * @param exampleId 示例图ID
     * @param page 页码
     * @param size 页大小
     * @param currentUserId 当前用户ID
     * @return 聊天记录分页数据
     */
    IPage<AiImageExampleChat> getChatPage(Long exampleId, Integer page, Integer size, Long currentUserId);
    
    /**
     * 发布聊天记录
     * 
     * @param exampleId 示例图ID
     * @param request 发布请求
     * @param userId 用户ID
     * @return 发布的聊天记录
     */
    AiImageExampleChat publishChat(Long exampleId, ExampleChatRequest request, Long userId);
    
    /**
     * 点赞/取消点赞
     * 
     * @param chatId 聊天记录ID
     * @param userId 用户ID
     * @return 点赞结果
     */
    Boolean toggleLike(Long chatId, Long userId);
    
    /**
     * 获取点赞状态和数量
     * 
     * @param chatId 聊天记录ID
     * @param userId 用户ID
     * @return {liked: true/false, likeCount: 数量}
     */
    java.util.Map<String, Object> getLikeInfo(Long chatId, Long userId);
}
